package models

import (
	"github.com/globalsign/mgo/bson"
)

type User struct {
	Uid      bson.ObjectId `bson:"_id" json:"uid"`
	Username string        `json:"username"`
	Account  string        `json:"account"`
	Password string        `json:"password"`
}

type AdminUser struct {
	Uid      bson.ObjectId `bson:"_id" json:"uid"`
	Name     string        `bson:"name" json:"name"`
	Account  string        `bson:"account" json:"account"`
	Password string        `bson:"password" json:"password"`
	Power    int64         `bson:"power" json:"power"`
}

type GameUser struct {
	Uid        bson.ObjectId `bson:"_id" json:"uid"`
	AccountId  string        `bson:"accountId" json:"accountId"`   // SDK的用户ID
	FaceBookId string        `bson:"faceBookId" json:"faceBookId"` // fb的用户ID
	IdentifId  string        `bson:"identifId" json:"identifId"`   // 玩家唯一标识，从10000-99999999开始，如果不够再增加A0000000，首数字为十六位
	Number     int64         `bson:"number" json:"number"`         //玩家编号
	Name       string        `bson:"name" json:"name"`
	Head       string        `bson:"head" json:"head"`
	Energy     int64         `bson:"energy" json:"energy"`           //体力
	Gold       int64         `bson:"gold" json:"gold"`               //金币
	Diamon     int64         `bson:"diamon" json:"diamon"`           //砖石
	Shield     int64         `bson:"shield" json:"shield"`           //盾牌
	Pos        *PosInfo      `bson:"pos,omitempty" json:"pos"`       // 关卡位置信息
	MaxPos     *PosInfo      `bson:"maxPos,omitempty" json:"maxPos"` // 最大关卡信息
	TheftNum   int64         `bson:"theftNum" json:"theftNum"`       // 被偷窃次数
	FireNum    int64         `bson:"fireNum" json:"fireNum"`         // 放火次数

	LastLoginTime    int64 `bson:"last_login_time" json:"lastLoginTime"`     // 最后登录时间
	OfflineTime      int64 `bson:"offline_time" json:"offlineTime"`          // 离线时间
	LastGameDuration int64 `bson:"lastGameDuration" json:"lastGameDuration"` // 上次游玩时间
	LeaveTime        int64 `bson:"leaveTime" json:"leaveTime"`               // 离开时间 两次登录相隔时间
	LeaveDay         int64 `bson:"leaveDay" json:"leaveDay"`                 // 离开时间 两次登录相隔天数，不精确

	Robot           bool   `bson:"robot" json:"robot"`                     // 是否是机器人
	EnergyTime      int64  `bson:"energyTime" json:"energyTime"`           // 给体力的时间
	NextRecoverTime int64  `bson:"nextRecoverTime" json:"nextRecoverTime"` // 恢复体力时间差
	Status          int64  `bson:"status" json:"status"`                   // 状态 0 正常 1 正在被放火
	BanTime         int64  `bson:"banTime" json:"banTime"`                 // 解禁时间
	SlotNoticeUser  string `bson:"slotNoticeUser" json:"slotNoticeUser"`   // 老虎机通知 玩家对象
	openFireGrid    bool
	FireProtec      bool  `bson:"fireProtec" json:"fireProtec"` // 放火保护
	SlotLv          int64 `bson:"slotLv" json:"slotLv"`         // 老虎机等级
	// 星星分开算
	StarSum        int64 `bson:"starSum" json:"starSum"`               // 星星总数量
	Star           int64 `bson:"star" json:"star"`                     // 额外奖励的星星，每关获得所有星星，额外奖励20个星星。
	StarHero       int64 `bson:"starHero" json:"starHero"`             // 英雄星星
	StarPet        int64 `bson:"starPet" json:"starPet"`               // 宠物星星
	StarMap        int64 `bson:"starMap" json:"starMap"`               // 地图星星
	StarAchiev     int64 `bson:"starAchiev" json:"starAchiev"`         // 成就星星
	StarChangeTime int64 `bson:"starChangeTime" json:"starChangeTime"` // 星星改变时间

	UnionId            string `bson:"unionId" json:"unionId"`       // 公会id
	UnionScore         int64  `bson:"unionScore" json:"unionScore"` // 公会积分
	UnionEnergyReqTime int64  `bson:"unionEnergyReqTime" json:"unionEnergyReqTime"`
	UnionJionTime      int64  `bson:"unionJionTime" json:"unionJionTime"` //加入公会时间
	UnionSignNum       int64  `bson:"unionSignNum" json:"unionSignNum"`   //签到，点击剩余次数
	UnionIntegral      int64  `bson:"unionIntegral" json:"unionIntegral"` //公会签到，每次点击，获得的积分
	UnionCurTime       int64  `bson:"unionCurTime" json:"unionCurTime"`   //公会签到，当前签到凌晨时间

	HandleGoldRate   int64           `bson:"handleGoldRate" json:"handleGoldRate"`     // 拾取金币收益
	TheftGoldRate    int64           `bson:"theftGoldRate" json:"theftGoldRate"`       // 被偷金币损失
	FireGridRate     int64           `bson:"fireGridRate" json:"fireGridRate"`         // 挖焦土消耗金币
	RegisterTime     int64           `bson:"registerTime" json:"registerTime"`         // 注册时间
	Platform         int64           `bson:"platform" json:"platform"`                 // 登录平台
	UsedName         string          `bson:"usedName" json:"usedName"`                 // 曾用名
	AvatarFrame      int64           `bson:"avatarFrame" json:"avatarFrame"`           // 头像框ID-使用中
	AvatarFrameArr   map[int64]int64 `bson:"avatarFrameArr" json:"avatarFrameArr"`     // 头像框ID列表-持有
	UserGroup        int64           `bson:"userGroup" json:"userGroup"`               // 用户分组
	LastSignInTime   int64           `bson:"lastSignInTime" json:"lastSignInTime"`     // 上次签到时间
	ClosureStartTime int64           `bson:"closureStartTime" json:"closureStartTime"` //封禁起始时间
	ClosureEndTime   int64           `bson:"closureEndTime" json:"closureEndTime"`     //封禁结束时间

	LangsTyp            string `bson:"langsTyp" json:"langsTyp"`                       //用户使用的语言
	SuperAccount        int64  `bson:"superAccount" json:"superAccount"`               // 0.非白名单 1.白名单、超级账号
	FirstReChargeStatus int64  `bson:"firstReChargeStatus" json:"firstReChargeStatus"` // 首充奖励状态 0-未达成 1-达成未领取 2-达成并领取

	RenameCd int64 `bson:"RenameCd" json:"RenameCd"` // 更改信息冷却时间戳_未来解禁时间
}

// 关卡位置信息
type PosInfo struct {
	LockBlockTid     int64 `bson:"lockBlockTid" json:"lockBlockTid"`
	LayerId          int64 `bson:"layerId" json:"layerId"`
	LayerOpenGridNum int64 `bson:"layerOpenGridNum" json:"layerOpenGridNum"`
}

// 物品
type Goods struct {
	Tid int64 `bson:"tid" json:"tid"`
	Num int64 `bson:"num" json:"num"`
}

// 宝箱内的物品
type BoxRes struct {
	Tid int64
	Res []*Goods
}
